package com.eight.common.pojo;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.time.LocalDateTime;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

/**
* 课程科目
* @TableName edu_subject
*/
@Data
@ApiModel(value = "Subject对象",description = "课程分类")
@TableName("edu_subject")
@EqualsAndHashCode(callSuper = false)
public class ZoneSubject implements Serializable {

    /**
    * 课程类别ID
    */
    @NotNull(message="[课程类别ID]不能为空")
    @ApiModelProperty("课程类别ID")
    @TableId(type = IdType.ASSIGN_ID)
    private String id;
    /**
    * 类别名称
    */
    @NotBlank(message="[类别名称]不能为空")
    @Size(max= 10,message="编码长度不能超过10")
    @ApiModelProperty("类别名称")
    @Length(max= 10,message="编码长度不能超过10")
    private String title;
    /**
    * 父ID
    */
    @NotNull(message="[父ID]不能为空")
    @ApiModelProperty("父ID")
    private String parentId;
    /**
    * 课程分类的状态 1 正常  0  禁用
    */
    @NotNull(message="[课程分类的状态 1 正常  0  禁用]不能为空")
    @ApiModelProperty("课程分类的状态 1 正常  0  禁用")
    private String statusId;
    /**
    * 备注
    */
    @Size(max= 255,message="编码长度不能超过255")
    @ApiModelProperty("备注")
    @Length(max= 255,message="编码长度不能超过255")
    private String remark;
    /**
    * 排序字段
    */
    @NotNull(message="[排序字段]不能为空")
    @ApiModelProperty("排序字段")
    private Object sort;
    /**
    * 创建时间
    */
    @NotNull(message="[创建时间]不能为空")
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;
    /**
    * 更新时间
    */
    @NotNull(message="[更新时间]不能为空")
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtModified;

    @TableField(exist = false)
    private List<ZoneSubject> children;


}
